package com.sneaker.shower.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.sneaker.shower.entity.domain.order.PayOrderDO;
import com.sneaker.shower.entity.domain.user.UserDO;
import com.sneaker.shower.entity.domain.user.UserLevelDO;
import com.sneaker.shower.entity.dto.*;
import org.springframework.transaction.annotation.Transactional;

import java.math.BigDecimal;

/**
 * @author Hechangjian
 * @version 1.0
 * @className UserService
 * @date 2019/12/01 1:34
 * @description
 * @program bath
 */
public interface UserService extends IService<UserDO> {
    Boolean register(String openId, String verifyCode, String phone);

    UserChargeRespDTO rolling(String guid);

    WxPayParamDTO charge(Integer type);

    @Transactional
    void updateUserLevel(PayOrderDO payOrderDO, WxPayParamDTO wxPayParamDTO);

    Boolean updateUserRemarkName(UserDTO userDTO);

    void userPay(UserLevelDO userLevelDO, Long userGuid, Integer userVersion);

    Boolean verifyCode(String phone);

    MemberInfoDTO getMemberInfo();

    UserPayTypeRespDTO getUserPayType(String orderGuid);

    UserPayTypeRespDTO getOfflinePayType(BigDecimal amount);

    String getInvitedQrCode();

    TotalPromotionDTO getMyPromotion(PromotionsReqDTO promotionsReqDTO);

    Boolean showCharge();
}
